<?php
/*
+--------------------------------------------------------+
| GMapbook - A Guestbook base on Google Map API          |
| Support :  http://blog.codexpress.cn                   |
| Author  :  kukukuan (kukukuan@163.com)             |
| Copyright (c) 2006                                     |
|--------------------------------------------------------+
*/

//用户ID
$uid = isset($_GET["uid"]) ? intval( $_GET["uid"] ) : false;

require_once("include/include.inc.php");

//按地理位置添加节点，若一个地点有多条留言，则在该地点添加多条信息，便于GInfoWindowTabs使用
function appendItem($xml, $parent, $sequence, $id, $name, $email, $content, $reply, $ip, $longitude, $latitude, $posttime, $replytime, $display) {
	global $logged_in;
	// 如果未登录
	if (!$logged_in) {
		// 屏蔽留言ID，禁止对其回复
		$id = "";
		// 屏蔽留言者Email，防止滥用
		$email = "";
		// 屏蔽留言者IP，防止滥用
		$ip = "";
		
		// 如果设定为隐藏，屏蔽留言内容
		if(!$display) $content = '#hidden#';
	}
	
	// 判断当前地点是否已经被添加
	$locations = $parent->getElementsByTagName("location");
	foreach ($locations as $location) {
		if (($location->getAttribute("longitude")==$longitude) && ($location->getAttribute("latitude")==$latitude)) {
			$item = $location;
			break;
		}
	}
	
	// 如果未被添加，则创建新的节点
	if (!($item)) {
		$item = $xml->createElement("location");
		$item = $parent->appendChild($item);
		
		$node_longitude = $xml->createAttribute("longitude");
		$node_longitude = $item->appendChild($node_longitude);
		$node_longitude->appendChild($xml->createTextNode($longitude));
		
		$node_latitude = $xml->createAttribute("latitude");
		$node_latitude = $item->appendChild($node_latitude);
		$node_latitude->appendChild($xml->createTextNode($latitude));
	}
	
	// 在地点的节点下创建留言节点
	$entry = $xml->createElement("entry");
	$entry = $item->appendChild($entry);
	
	// 添加留言节点顺序的属性，在切换当前显示的留言的时候使用
	$node_sequence = $xml->createAttribute("sequence");
	$node_sequence = $entry->appendChild($node_sequence);
	$node_sequence->appendChild($xml->createTextNode($sequence));
	
	// 留言的ID，如果回复则需要使用ID对记录进行更新
	$node_id = $xml->createAttribute("id");
	$node_id = $entry->appendChild($node_id);
	$node_id->appendChild($xml->createTextNode($id));
	
	// 留言者姓名
	$node_name = $xml->createAttribute("name");
	$node_name = $entry->appendChild($node_name);
	$node_name->appendChild($xml->createTextNode($name));
	
	// 留言者Email
	$node_email = $xml->createAttribute("email");
	$node_email = $entry->appendChild($node_email);
	$node_email->appendChild($xml->createTextNode($email));
	
	// 留言者IP
	$node_ip = $xml->createAttribute("ip");
	$node_ip = $entry->appendChild($node_ip);
	$node_ip->appendChild($xml->createTextNode($ip));
	
	// 留言发布时间
	$node_posttime = $xml->createAttribute("posttime");
	$node_posttime = $entry->appendChild($node_posttime);
	$node_posttime->appendChild($xml->createTextNode($posttime));
	
	// 留言回复时间
	$node_replytime = $xml->createAttribute("replytime");
	$node_replytime = $entry->appendChild($node_replytime);
	$node_replytime->appendChild($xml->createTextNode($replytime));
	
	// 留言内容
	$node_content = $xml->createElement("content");
	$node_content = $entry->appendChild($node_content);
	$node_content->appendChild($xml->createCDATASection($content));
	
	// 留言回复内容
	$node_reply = $xml->createElement("reply");
	$node_reply = $entry->appendChild($node_reply);
	$node_reply->appendChild($xml->createCDATASection($reply));
}

// 使用DOMDocument， 需要PHP 5.0以上版本
$doc = new DOMDocument();
$doc->formatOutput = true;
$root = $doc->createElement("entries");
$root = $doc->appendChild($root);


// 实现分页
//页数
$page = isset($_GET["page"]) ? intval( $_GET["page"] ) : 1;
//每页条目数
$pagesize = isset($_GET["pagesize"]) ? intval( $_GET["pagesize"] ) : 10;


if ($page*$pagesize>0) {
	//计算记录偏移量
	$offset = $pagesize*($page - 1);
	$db = &new mysqldb($_DBNAME, $_DBHOST, $_DBUSER, $_DBPASS);
	//$gmbadmin = $db->select_single_value("users", "uname", "WHERE uid=$uid");
	
	// 查询语句
	$where_str = "WHERE uid=$uid ORDER BY posttime DESC LIMIT $offset, $pagesize";
	// 将取出的数据生成数组，方便使用
	$entries = $db->select_to_array("messages","*",$where_str);
	$db->close();
	
	// 若存在数据，则进行添加生成XML
	if ($entries){
		$i = 0;
		foreach ($entries as $entry) {
			appendItem($doc, $root, $i, $entry["id"], $entry["name"], $entry["email"], $entry["content"], $entry["reply"], long2ip($entry["ip"]), $entry["longitude"], $entry["latitude"], $entry["posttime"], $entry["replytime"], $entry["display"]);
			$i++;
		}	
	}
}

// 添加是否登录的属性
$node_logged_in = $doc->createAttribute("logged_in");
$node_logged_in = $root->appendChild($node_logged_in);
$node_logged_in->appendChild($doc->createTextNode($logged_in));

// 添加用户信息的属性
$node_user_info = $doc->createAttribute("user_info");
$node_user_info = $root->appendChild($node_user_info);
$node_user_info->appendChild($doc->createTextNode($_SESSION[$sid]));


// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

// HTTP/1.0
header("Pragma: no-cache");
header("Content-type: text/xml; charset=utf-8");

// 输出XML
echo $doc->saveXML();

?>
